package com.spring.advice;

import org.springframework.aop.ThrowsAdvice;

import java.lang.reflect.Method;

/**
 * ThrowsAdvice异常抛出增强接口，没有定义任何方法，他是标签接口。在运行期Spring使用反射机制自行判断
 * 。方法签名形式固定
 */
public class TransactionMangerAdvice implements ThrowsAdvice {

    //afterThrowing方法名强制是这个样子，前三个入参可选，要么全都提供，要么全都不提供，最后一个入参是
    //ThrowAble或其子类
    //可以在同一个异常抛出增强中定义多个afterThrowing方法重载，Spring会自动选择最匹配的增强方法

    public void afterThrowing(Method nethod,Object[] args,Object target,Exception exception){
        System.out.println("----***----");
        System.out.println("抛出异常的方法：" + nethod.getName()  );
        System.out.println("异常信息：" + exception.getMessage());

        System.out.println("成功回滚事物。");
    }
}
